<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Elisa3: speed_control.h File Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Elisa3
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('speed__control_8h.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">speed_control.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Speed controler module.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="variables_8h_source.html">variables.h</a>&quot;</code><br/>
</div>
<p><a href="speed__control_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="speed__control_8h.html#af732d3eb933d96ad21b57c908c861aaf">init_speed_control</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the speed controller parameters. Actually not used.  <a href="#af732d3eb933d96ad21b57c908c861aaf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="speed__control_8h.html#a57ab122fa578676fac1b9c48eb2c722f">start_vertical_speed_control_left</a> (signed int *<a class="el" href="variables_8h.html#a4e83735e34bb6f16744472cc444e2ba0">pwm_left</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Control the speed of the left motor in a vertical wall.  <a href="#a57ab122fa578676fac1b9c48eb2c722f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="speed__control_8h.html#a16b850ed7820e0c1a62cf5f21a8efdbf">start_vertical_speed_control_right</a> (signed int *<a class="el" href="variables_8h.html#aa60ff17349a4bebe507fd4cc4e7a258b">pwm_right</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Control the speed of the right motor in a vertical wall.  <a href="#a16b850ed7820e0c1a62cf5f21a8efdbf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="speed__control_8h.html#a48378f347d3e36bae189adf480eae0f1">start_horizontal_speed_control_left</a> (signed int *<a class="el" href="variables_8h.html#a4e83735e34bb6f16744472cc444e2ba0">pwm_left</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Control the speed of the left motor in a flat surface.  <a href="#a48378f347d3e36bae189adf480eae0f1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="speed__control_8h.html#a15ee29380238ff0aba3c9f399af043ec">start_horizontal_speed_control_right</a> (signed int *<a class="el" href="variables_8h.html#aa60ff17349a4bebe507fd4cc4e7a258b">pwm_right</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Control the speed of the right motor in a flat surface.  <a href="#a15ee29380238ff0aba3c9f399af043ec"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Speed controler module. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>Stefano Morgani &lt;<a href="mailto:stefano@gctronic.com">stefano@gctronic.com</a>&gt; </dd></dl>
<dl class="version"><dt><b>Version:</b></dt><dd>1.0 </dd></dl>
<dl class="date"><dt><b>Date:</b></dt><dd>01.02.12 </dd></dl>
<dl class="copyright"><dt><b>Copyright:</b></dt><dd>GNU GPL v3</dd></dl>
<p>The PID controller for the robot velocity is based on the back-emf technique for measuring the current speed of each motor. The module contains both the vertical and horizontal controllers that are activated automatically based on the current orientation of the robot. The two controllers work basically the same way, they differ only on the feed forward parameter handling, that in the case of the vertical controller depends on the vetical orientation of the robot (when the robot is moving up then the feed forward is increased, whereas when the robot is moving down then the feed forward is decreased). The controllers are separated for each motor. The values of the input arguments and parameters are choosen in order to work only with 2 bytes integers. </p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="af732d3eb933d96ad21b57c908c861aaf"></a><!-- doxytag: member="speed_control.h::init_speed_control" ref="af732d3eb933d96ad21b57c908c861aaf" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="speed__control_8h.html#af732d3eb933d96ad21b57c908c861aaf">init_speed_control</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initialize the speed controller parameters. Actually not used. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>none </dd></dl>

</div>
</div>
<a class="anchor" id="a48378f347d3e36bae189adf480eae0f1"></a><!-- doxytag: member="speed_control.h::start_horizontal_speed_control_left" ref="a48378f347d3e36bae189adf480eae0f1" args="(signed int *pwm_left)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="speed__control_8h.html#a48378f347d3e36bae189adf480eae0f1">start_horizontal_speed_control_left</a> </td>
          <td>(</td>
          <td class="paramtype">signed int *&#160;</td>
          <td class="paramname"><em>pwm_left</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Control the speed of the left motor in a flat surface. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pwm_left</td><td>it's a reference; input =&gt; desired speed; output =&gt; pwm value </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>none </dd></dl>

</div>
</div>
<a class="anchor" id="a15ee29380238ff0aba3c9f399af043ec"></a><!-- doxytag: member="speed_control.h::start_horizontal_speed_control_right" ref="a15ee29380238ff0aba3c9f399af043ec" args="(signed int *pwm_right)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="speed__control_8h.html#a15ee29380238ff0aba3c9f399af043ec">start_horizontal_speed_control_right</a> </td>
          <td>(</td>
          <td class="paramtype">signed int *&#160;</td>
          <td class="paramname"><em>pwm_right</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Control the speed of the right motor in a flat surface. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pwm_right</td><td>it's a reference; input =&gt; desired speed; output =&gt; pwm value </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>none </dd></dl>

</div>
</div>
<a class="anchor" id="a57ab122fa578676fac1b9c48eb2c722f"></a><!-- doxytag: member="speed_control.h::start_vertical_speed_control_left" ref="a57ab122fa578676fac1b9c48eb2c722f" args="(signed int *pwm_left)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="speed__control_8h.html#a57ab122fa578676fac1b9c48eb2c722f">start_vertical_speed_control_left</a> </td>
          <td>(</td>
          <td class="paramtype">signed int *&#160;</td>
          <td class="paramname"><em>pwm_left</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Control the speed of the left motor in a vertical wall. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pwm_left</td><td>it's a reference; input =&gt; desired speed; output =&gt; pwm value </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>none </dd></dl>

</div>
</div>
<a class="anchor" id="a16b850ed7820e0c1a62cf5f21a8efdbf"></a><!-- doxytag: member="speed_control.h::start_vertical_speed_control_right" ref="a16b850ed7820e0c1a62cf5f21a8efdbf" args="(signed int *pwm_right)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="speed__control_8h.html#a16b850ed7820e0c1a62cf5f21a8efdbf">start_vertical_speed_control_right</a> </td>
          <td>(</td>
          <td class="paramtype">signed int *&#160;</td>
          <td class="paramname"><em>pwm_right</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Control the speed of the right motor in a vertical wall. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pwm_right</td><td>it's a reference; input =&gt; desired speed; output =&gt; pwm value </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>none </dd></dl>

</div>
</div>
</div><!-- contents -->
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="speed__control_8h.html">speed_control.h</a>      </li>

    <li class="footer">Generated on Thu Dec 4 2014 08:30:52 for Elisa3 by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
   </ul>
 </div>


</body>
</html>
